#include<iostream>
#include<sys/types.h>
#include<signal.h>
#include<unistd.h>
#include<string>
#include<cstdlib>

using namespace std;
int cnt = 0;
void hander(int signo)
{
    cout<<cnt<<endl;
    alarm(1);
    // cout<<"捕捉到信号："<<signo<<endl;
}

static void Usage(const string& proc)
{
    cout<<"\nUsage:"<<proc<<"pid signal"<<endl;
}

int main(int argc , char* argv[])
{
    //1.kill
    // if(argc != 3)
    // {
    //     Usage(argv[0]);
    //     exit(1);
    // }
    // pid_t id = atoi(argv[1]);//atoi--int 转换
    // int sig = atoi(argv[2]);
    // int n = kill(id,sig);
    // if(n != 0)
    // {
    //     perror("kill");
    // }

    //2.raise  abort
    // int cnt = 0;
    // while(true)
    // {
    //     cnt++;
    //     cout<<cnt<<endl;

    //     sleep(1);
    //     if(cnt == 10)
    //     {
    //         abort();//==raise(6) == kille (getpid(),6);
    //         //raise(9);//==kill(getpid(),9)
    //     }
    // }

    //关于报异常的理解：
    //1./0
    // signal(8,hander);
    // int a = 0;
    // a/=0;//报异常  8  SIGEPE
    // while(true)
    // {
    //     cout<<"我正在运行-----"<<endl;
    //     sleep(1);
    // }

    //2.野指针
    // signal(11 , hander);
    // int* p =nullptr;
    // *p = 100;//野指针  
//-------------------------------------------------------------
    //3.软件条件
    //alarm  闹钟
    signal(SIGALRM,hander);

    alarm(1);//计算1s计算机计算了多少次()
    while(true)
    {
        cnt++;
    }

    // signal(3,hander);
    // while(true)
    // {
    //     cout<<"HOLLE!"<<endl;
    //     sleep(1);
    // }   
    return 0;
}